【AI】【笔记】MCP 协议:连接 AI 模型与外部世界的桥梁
Jan 5, 2025笔记ai
MCP 协议:连接 AI 模型与外部世界的桥梁
背景
随着 AI 技术的飞速发展,大语言模型(LLM)在推理和生成质量上取得了巨大进步。然而,这些模型在实际应用中常常受限于数据孤岛和遗留系统,无法充分发挥潜力。为了解决这一问题,Anthropic 公司于 2024 年 11 月推出了模型上下文协议(MCP,Model Context Protocol),旨在通过统一的客户端-服务器架构,统一大型语言模型与外部数据源和工具之间的通信协议,解决 LLM 应用与数据源连接的难题。
MCP 可以被视为 AI 应用的“USB-C 接口”,它提供了一种标准化的方式,将 AI 模型与各种数据源和工具无缝连接。MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。
能力
MCP 协议的核心思想是通过上下文管理来优化模型的交互过程。上下文管理包括上下文的存储、更新、传递和删除等操作。通过有效的上下文管理,模型可以在多轮对话中保持对历史信息的记忆,从而更好地理解用户的意图和需求。MCP 的核心能力还体现在以下几个方面:
- 数据集成:连接 AI 助手与各种数据源,包括本地和远程资源,如文件、数据库、API 等。
- 工具集成:集成 API 和其他工具,您的 AI 助手可以直接与 Git 交互、运行测试、管理问题等等,让 AI 系统能够执行更复杂的操作。
- 模板化交互:基于提示(Prompts)提供模板化的交互方式,方便用户快速构建特定任务的交互流程。
- 安全性:内置安全机制(MCP 服务器隔离凭据和敏感数据,交互需要显式的用户批准(除非对某些 MCP 工具启用自动批准)),保护数据和 API 密钥不被泄露,确保数据访问既可控又可审计。
- 开发者支持:提供 SDK 和文档,支持开发者构建和测试 MCP 连接器。
- 预构建服务器:提供预构建的 MCP 服务器,快速集成流行企业系统。
- 上下文维护:在不同工具和数据集之间保持上下文,而不是每次都重新开始,MCP 服务器可以跨会话维护知识,创建一个真正的“项目内存”,实现更智能的任务处理。
MCP 支持通过同一协议访问本地资源(如数据库、文件)和远程资源(如 Slack、GitHub API),无需定制集成。MCP 不仅共享数据,还可公开工具和交互模板,且内置安全性,确保资源由服务器完全掌控。目前 MCP 支持本地运行,未来将引入企业级认证的远程支持,实现团队间的安全共享。通过 Claude 桌面应用,开发者可在短时间内集成 MCP,快速连接多种数据源,推动 AI 集成的标准化发展。
使用
MCP 官方文档写得挺细致的,关于使用这块也建议看一下官方文档说明
MCP 协议遵循客户端-服务器架构,规范及 SDK:
核心架构:
MCP 包含以下几个核心概念:
- MCP 主机(Hosts):发起请求的 LLM 应用程序,如 Claude Desktop、IDE 或 AI 工具。
- MCP 客户端(Clients):在主机程序内部,与 MCP 服务器保持 1:1 的连接。
- MCP 服务器(Servers):为 MCP 客户端提供上下文、工具和提示信息。
- 本地资源(Local Resources):本地计算机中可供 MCP 服务器安全访问的资源。
- 远程资源(Remote Resources):MCP 服务器可以连接到的远程资源,如通过 API 访问的网络资源。
MCP 定义了两种通信机制: - 本地通信:使用标准输入输出(stdio)传输数据,客户端启动服务器程序作为子进程,通过 stdin/stdout 进行消息通讯,消息格式为
JSON-RPC 2.0
。 - 远程通信:客户端与服务器可以部署在任何地方,通过基于 SSE 的 HTTP 通信,消息格式同样为
JSON-RPC 2.0
。
快速开始
目前 MCP 有三种方式可以帮助你快速开始,Python
或 TypeScript
选一个自己比较熟悉的构建服务即可。
- 快速入门(MCP Quickstart):不到 5 分钟即可开始使用 MCP,可在 Claude 桌面应用和本地服务之间建立安全连接(以上的 “lencx 演示” 就是基于该部分文档实现)。
- 构建第一个 Python 服务 (MCP Python):15 分钟内用 Python 创建一个简单的 MCP 服务器。
- 构建第一个 TypeScript 服务(MCP TypeScript):15 分钟内用 TypeScript 创建一个简单的 MCP 服务器。
开发工具
开发 MCP 服务器或将其与应用程序集成时,有效的调试至关重要。所以 MCP 提供了几种不同层次的调试工具:
- MCP 检查器(MCP Inspector):交互式调试界面;直接服务器测试
- Claude 桌面开发工具(Claude Desktop Developer Tools):集成测试;日志收集;Chrome DevTools 集成
- 服务器日志(Server Logging):自定义日志记录实现;错误追踪;性能监控
示例
以下是一个极简单的 MCP 协议使用示例:
- 安装预构建的 MCP 服务器:通过 Claude Desktop 应用程序安装预构建的 MCP 服务器。
- 编写 Server 端代码:根据 MCP 协议定义,创建一个 MCP 服务器,提供资源、工具或提示词。
- 编写 Client 端代码:创建一个 MCP 客户端,与服务器建立连接,并请求使用服务器提供的资源或工具。
以下是一个使用 TypeScript 实现的简单 MCP 协议示例,展示了如何创建一个 MCP 服务器和客户端,并通过它们进行通信。
环境要求:
- Node.js (v18+)
- Python (v3.8+)
1. 创建 MCP 服务器
首先,安装必要的依赖项:
1 | npm install @modelcontextprotocol/sdk |
然后,创建一个简单的 MCP 服务器,该服务器提供一个工具,用于计算两个数字的和:
1 | // server.ts |
2. 创建 MCP 客户端
接下来,创建一个 MCP 客户端,用于调用服务器提供的工具:
1 | // client.ts |
3. 运行示例
- 启动服务器:运行
node server.js
启动 MCP 服务器。 - 启动客户端:运行
node client.js
启动 MCP 客户端。 - 观察输出:客户端会列出可用工具,并调用
calculate_sum
工具,输出结果。
4. 集成到Claude Desktop
如果需要将 MCP 服务器集成到Claude Desktop
,可以在claude_desktop_config.json
中添加服务器配置:
1 | { |
应用
工具平台结合
如 Cline 的结合:
社区插件应用
如:
- mcp-rtfm:智能文档获取
- mcp-postman:API 测试
- mcp-playwright:浏览器自动化
- sqlite-explorer-fastmcp:数据库分析
- mcp-rest-api:REST API 测试
总结
MCP 协议为 AI 模型与外部数据源和工具的集成提供了一种标准化、安全且灵活的解决方案。通过客户端-服务器架构和 JSON-RPC 2.0 通信机制,MCP 能够实现本地和远程资源的无缝访问。随着越来越多的应用接入 MCP 协议,未来有望构建一个更加互联、高效的 AI 生态系统。
Author
My name is Micheal Wayne and this is my blog.
I am a front-end software engineer.
Contact: michealwayne@163.com